#!/usr/bin/python
# coding=utf-8
import collections
# config
dictfile="SogouLabDic.dic" #字典路径
minwords = 1 #只获取2个或2个以上的单词

class textprocess(object): 
    _instance = None # 单例模式 
    def __new__(self, *args, **kwargs):  
        if not self._instance:  
            self._instance = super(textprocess, self).__new__(self, *args, **kwargs)
            self._dict=collections.defaultdict(lambda:1)
            f=open(dictfile,'r',2,'utf-8')
            while 1:
                line=f.readline()
                if not line: break
                word, freq = line.split('\t')[0:2]
                self._dict[word]=int(freq)
            f.close()
        return self._instance
        
    def fenci(self, s):
        i=0
        for w in s:
            if (w >= 'a' and w<='z') or (w >= 'A' and w<='Z'):
                i=i+1
        l=len(s)
        if(i/l>0.7):
            return s.split(" ")
        p=[0 for i in range(l+1)]
        t=[1 for i in range(l)]
        for i in range(l-1,-1,-1):
            for k in range(1,l-i+1):
                if(self._dict[s[i:i+k]]+p[i+k] > p[i]):
                    p[i]=self._dict[s[i:i+k]]+p[i+k] 
                    t[i]=k
        res=[]
        i=0
        while i<l:
            if t[i] >= minwords:
                if t[i] == 1 and ((s[i:i+t[i]] >= 'a' and s[i:i+t[i]]<='z') or (s[i:i+t[i]] >= 'A' and s[i:i+t[i]]<='Z')):
                    pass
                else:
                    res.append(s[i:i+t[i]])
            i=i+t[i]
        return res

  
if __name__ == '__main__':
    a,b=textprocess (),textprocess ()
    s="aaa在学校实验室的设备管理工作中今天天气不错，设备的编排是一项十分复杂、棘手的工作风和日丽明天放五一。在编排过程中，由于数量多容易出错。利用计算机辅助进行设备编排工作，既提高了编排的科学性，又可大大减轻管理人员的工作强度，提高工作效率，从而教学设备管理现代化迈上了一个新台阶。又因为现在各个高校自己教学设备众多但自动管理水平相比过低，很多高校管理设备都采用在设备购进以后设备的基本情况和相关信息登记存档。存档以后档案基本就没人记录与维护，至于以后设备的变迁或损坏都不会记录在设备档案中，即不能体现设备的即时状态。而有些即使有设备管理系统的单位，就算是能把设备的即时信息体现在设备档案上，但设备的缺陷处理及设备缺陷功能没有实施，设备检修的备品备件情况和检修成本核算没有实现，整个学校教学设备管理信息化仍处于较水平。将管理任务成小块，落实到个人并能随时查询设备当前情况和历史情况，对设备的可靠性分析有直接作用，使管理人员从手工计算、统计工作中脱出来。"
    c=a.fenci(s)
    print(c)

